home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / meta27 / mfpandor.lzh / caps.mf next >
Text File  |  1990-11-16  |  38KB  |  993 lines

  1. %*****************************************************************************
  2. %        Copyright (c) 1989 by N. N. Billawala
  3. %*****************************************************************************
  4.  
  5.  
  6. % caps.mf  uppercase roman alphabet
  7.  
  8. % 26 characters
  9.  
  10.  
  11.  
  12. iff OK "A":  "The letter A"; 
  13.   beginchar("A",A_w*width#+e_mono#,cap#,0);
  14.  
  15.   min_limit(join_radius)(.5apex.uc);
  16.   top z20=(.5w,h+ov_apex.uc)//; pos20(apex.uc,0-apex_angle);
  17.   bot y3=0; z3l=whatever[z20l,(0,0)];
  18.   bot y6=0; z6r=whatever[z20r,(w,0)];
  19.   z20l=z1l; z20r=z4r;
  20.   multpos(1,3)(thin_stem.uc,constant_angle(z20l,(0,0),0));
  21.   multpos(4,6)(stem.uc,constant_angle(z20r,(w,0),0));
  22.  
  23.   onaline(1l,3l)(2l);          y2l=y5r=cap_bracket_h; 
  24.   onaline(1r,3r)(2r,40,41,44); 
  25.   onaline(4l,6l)(5l,40,42,43); 
  26.   y41=y42=round(.45[serif_thickness,y40]-.35thin_stem.uc);        % bar bottom
  27.   y43=y44=y41+max(1,.7thin_stem.uc);
  28.   onaline(4r,6r)(5r);          y2r=y5l=min(y41,cap_bracket_h); 
  29.   ref1=z43--z40--z44; 
  30.  
  31.   p1 =(fullserif.l(z3,z1,z2l,z2r,.5hs,.5hs) soften(z41,z42)
  32.        fullserif.r(z6,z4,z5l,z5r,.5hs,.5hs) soften(z20r,z20l) z2l)--cycle;
  33.   p1'=upnotch(ref1,angle(z20-z40),notch_length.uc)--cycle;
  34.  
  35.   showpoints(1,2,3,4,5,6,20,40,41,42,43,44);
  36. adjust(v_E*fitbasis.uc#+m_a*e_mfit#,v_D*fitbasis.uc#+m_a*e_mfit#); 
  37. show_character; endchar;
  38.  
  39.  
  40.  
  41. iff OK "B":  "The letter B"; 
  42.   beginchar("B",B_w*width#+b_mono#,cap#,0);
  43.  
  44.   top lft z11l=(0,h)//;           multpos(11,14)(stem.uc,0);
  45.   bot lft z14l=(0,0);     
  46.   onaline(11l,14l)(12l,13l);      y13l=cap_bracket_h;
  47.   onaline(11r,14r)(1,5,5l,5r,9);  y12l=max(h-cap_bracket_h,y13l);
  48.    
  49.   top y2r=h;
  50.   bot y1=bot y2l=top y2r-minor_curve.uc;
  51.   y5=.55h;
  52.   top y4r=top y5r=round(y5+.45thin_stem.uc);
  53.   bot y4l=bot y5l=top y5r-max(1,.9thin_stem.uc);
  54.   y6=.75[y5l,y5r];
  55.   bot y8r=0; top y8l=top y9=bot y8r+minor_curve.uc;    
  56.   rt z3r=(round(.9w),v_stress[y6,y2r])//;
  57.   lft z3l=(rt x3r-max(1,.9bowlstem.uc),v_stress[y5r,y2l]);
  58.   rt z7r=(w,v_stress[y8r,y6])//; lft z7l=(rt x7r-bowlstem.uc,v_stress[y8l,y4l]);
  59.   z3=.5[z3l,z3r];
  60.  
  61.   good_x_for(2r)(z1,z3r,.4)a;   good_x_for(2l)(z1,z3l,.4)b;
  62.   good_x_for(4r)(z5r,z3l,.4)c;  good_x_for(4l)(z5l,z7l,.4)d;                
  63.   good_x_for(6)(z5,z3,.6)e;                                 
  64.   good_x_for(8l)(z9,z7l,.4)f;   good_x_for(8r)(z9,z7r,.4)g;  
  65.  
  66.   p1 =leftserif(z11,z14,z12l,z14r,.5hs)--leftserif(z14,z11,z13l,z11r,.5hs)
  67.       ...z8r{right} o_t z7r{upward} o_t z6{left}--
  68.       z6+(0,epsilon){right} o_t z3r{upward} o_t z2r{left}...cycle;
  69.   p1'=z4r{right} i_t z3l{upward} i_t z2l{left}...z1--z5r...cycle; 
  70.   p2'=z8l{right} i_t z7l{upward} i_t z4l{left}...z5l--z9...cycle;
  71.  
  72.   showpoints(1,2,3,4,5,6,7,8,9,11,12,13,14);
  73. adjust(v_A*fitbasis.uc#+m_b*b_mfit#,v_F*fitbasis.uc#+m_bb*b_mfit#); 
  74. show_character; endchar;
  75.  
  76.  
  77. iff OK "C":  "The letter C"; 
  78.   beginchar("C",H_w*width#+d_mono#,cap#,0);
  79.  
  80.   save_num(term_length)=if bulb_taper:c_and_s.uc else:cs fi;
  81.   rt z1=(.95w,.9h)//;
  82.   lft z3l=(0,(1-v_stress)*h)//;  rt z3r=lft z3l+(bowlstem.uc,0);  
  83.   rt z5l=(w,major_curve.uc-ov_t.uc+.05h)//;            
  84.   top y2l=bot y2r+minor_curve.uc=h+ov_t.uc; 
  85.   bot y4l=top y4r-major_curve.uc=-ov_t.uc; 
  86.   good_x_for(2l)(z3l,z1,.6)a;  good_x_for(2r)(z3r,z1-(bulb_thickness,0),.6)b; 
  87.   good_x_for(4l)(z3l,z5l,.5)c;
  88.   ref1=z4l{right}...z5l;
  89.   pos5(max(1,.7major_curve.lc),angle(direction 1 of ref1)+90);
  90.   good_x_for(4r)(z3r,z5r,.5)d; 
  91.   x4r:=min(x4r,x4l+minor_curve.uc);
  92.  
  93.   p1=(bulb.tr(z1,z2r,z2l,term_length,bulb_thickness,90) o_t
  94.      z3l{downward} o_t z4l{right} o_t z5l 
  95.      if softpath:)softjoin(z5l--z5r)softjoin(else:--fi 
  96.      z5r i_t z4r{left} i_t z3r{upward} i_t z2r{right})--cycle;
  97.   
  98.   showpoints(1,2,3,4,5);
  99. adjust(v_C*fitbasis.uc#+m_d*d_mfit#,v_H*fitbasis.uc#+m_dd*d_mfit#); 
  100. show_character; endchar;
  101.  
  102.  
  103. iff OK "D":  "The letter D"; 
  104.   beginchar("D",D_w*width#+d_mono#,cap#,0);
  105.  
  106.   top lft z11l=(0,h)//;      multpos(11,14)(stem.uc,0);
  107.   bot lft z14l=(0,0);       
  108.   onaline(11l,14l)(12l,13l); y13l=cap_bracket_h; 
  109.   onaline(11r,14r)(1,5);     y12l=max(h-cap_bracket_h,y13l);
  110.  
  111.   top y2r=h;
  112.   bot y1=bot y2l=top y2r-major_curve.uc;
  113.   bot y4r=0;
  114.   top y5=top y4l=bot y4r+minor_curve.uc;
  115.   rt z3r=(w,v_stress*h)//; lft z3l=(rt x3r-bowlstem.uc,v_stress*h);  
  116.  
  117.   good_x_for(2r)(z1,z3r,.4)a;  good_x_for(2l)(z1,z3l,.4)b;
  118.   good_x_for(4r)(z5,z3r,.3)c;  good_x_for(4l)(z5,z3l,.3)d;                
  119.  
  120.   p1 =leftserif(z11,z14,z12l,z14r,.5hs)--leftserif(z14,z11,z13l,z11r,.5hs)
  121.       ...z4r{right} o_t z3r{upward} o_t z2r{left}...cycle;
  122.   p1'=(z4l{right} i_t z3l{upward} i_t z2l{left} soften(z1,z5)z4l{right})--cycle;
  123.  
  124.   showpoints(1,2,3,4,5,11,12,13,14);
  125. adjust(v_A*fitbasis.uc#+m_b*d_mfit#,v_C*fitbasis.uc#+m_bb*d_mfit#); 
  126. show_character; endchar;
  127.  
  128.  
  129. iff OK "E":  "The letter E"; 
  130.   beginchar("E",E_w*width#+b_mono#,cap#,0);
  131.  
  132.   top lft z11l=(0,h)//;           multpos(11,14)(stem.uc,0);
  133.   bot lft z14l=(0,0);             
  134.   onaline(11l,14l)(12l,13l);      y13l=cap_bracket_h; 
  135.   onaline(11r,14r)(1,4,4l,4r,6);  y12l=max(h-cap_bracket_h,y13l);
  136.   
  137.   top y2r=h; 
  138.   bot y1=bot y2l=top y2r-max(1,.95thin_stem.uc);
  139.   top rt z3=(.95w,h)//;
  140.   bot y7l=0; 
  141.   bot rt z8=(w,0);
  142.   top y6=top y7r=bot y7l+max(1,.97thin_stem.uc); 
  143.   y4=.55h; 
  144.   top y4r=bot y4l+max(1,.9thin_stem.uc)=top y5r=round(y4+.45thin_stem.uc);
  145.   
  146.   good_x_for(2r)(z1,z3,.6)a;  good_x_for(2l)(z1,z3,.6)b;
  147.   good_x_for(7r)(z6,z8,.6)c;  good_x_for(7l)(z6,z8,.6)d;                
  148.   good_x_for(5r)(z4,z3,.8)e;
  149.  
  150.   p1=(leftserif(z14,z11,z13l,z11r,.5hs)..
  151.       arm.br(z8,z7r,z7l,.5as,.75tip_thickness,90-arm_angle)soft soften(z6,z4l)
  152.       arm.tr(z5r,z4l,z4r,.15as,.25tip_thickness,90) soften(z4r,z1)
  153.       arm.tr(z3,z2l,z2r,.4as,.75tip_thickness,90)soft...
  154.       leftserif(z11,z14,z12l,z14r,.75hs))--cycle;
  155.  
  156.   showpoints(1,2,3,4,5,6,7,11,12,13,14);
  157. adjust(v_A*fitbasis.uc#+m_b*b_mfit#,v_F*fitbasis.uc#+m_bb*b_mfit#); 
  158. show_character; endchar;
  159.  
  160.  
  161. iff OK "F":  "The letter F"; 
  162.   beginchar("F",E_w*width#+b_mono#,cap#,0);
  163.  
  164.   top y2r=h; 
  165.   bot y1=bot y2l=top y2r-max(1,.95thin_stem.uc);
  166.   top rt z3=(w,h)//;
  167.   top y4r=bot y4l+max(1,.9thin_stem.uc)=top y5r=round(.52h);
  168.  
  169.   top lft z11l=(0,h)//;           multpos(11,14)(stem.uc,0);
  170.   bot lft z14l=(0,0);         
  171.   onaline(11l,14l)(12l,13l);      y13l=cap_bracket_h; y13r=min(y13l,y4l);  
  172.   onaline(11r,14r)(1,4l,4r,13r);  y12l=max(h-cap_bracket_h,y13l);
  173.  
  174.   good_x_for(2r)(z1,z3,.6)a;  good_x_for(2l)(z1,z3,.6)b;
  175.   good_x_for(5r)(z4r,z3,.8)c;
  176.  
  177.   p1=(fullserif(z14,z11,z13l,z13r,.5hs,.75hs)..z4l 
  178.         if softpath:)softjoin(else:--fi
  179.       arm.tr(z5r,z4l,z4r,.15as,.25tip_thickness,90) soften(z4r,z1)
  180.       arm.tr(z3,z2l,z2r,.4as,.75tip_thickness,90)soft...
  181.       leftserif(z11,z14,z12l,z14r,.75hs))--cycle;
  182.  
  183.   showpoints(1,2,3,4,5,11,12,13,14);
  184. adjust(v_A*fitbasis.uc#+m_b*b_mfit#,v_G*fitbasis.uc#+m_bb*b_mfit#); 
  185. show_character; endchar;
  186.  
  187.  
  188.  
  189.  def character_points=
  190. iff OK "G":  "The letter G";    
  191.   beginchar(71+alt9,D_w*width#+d_mono#,cap#,0);
  192.   save_num(term_length)=if bulb_taper:c_and_s.uc else:cs fi;
  193.   rt z1=(w-.25stem.uc,.9h)//;
  194.   lft z3l=(0,(1-v_stress)*h)//; rt z3r=(lft x3l+bowlstem.uc,(1-v_stress)*h);
  195.   top y2l=bot y2r+minor_curve.uc=h+ov_t.uc; 
  196.   bot y4l=top y4r-major_curve.uc=-ov_t.uc; 
  197.   good_x_for(2l)(z3l,z1,.6)a;  good_x_for(2r)(z3r,z1-(bulb_thickness,0),.6)b;
  198.   good_x_for(4l)(z3l,z5l,.5)c; good_x_for(4r)(z3r,z5r,.5)d; 
  199.   rt z5l=(w,.15h)//;           pos5(max(1,.75minor_curve.uc),130-oblique);  
  200.   z11r=(w,min(.45h,y1-as))//;  multpos(11,13)(stem.uc,0);
  201.   rt z13r=(w,0);
  202.     z20=(z5l--z5r i_t z4r{left})intersectionpoint(z11l--z13l);
  203.   onaline(11r,13r)(12r);
  204.    y12r=inlimit(y11r-cap_bracket_h)(y5l,y11r-serif_thickness);
  205.   onaline(11l,13l)(12l);        y12l=inlimit(y12r)(y20,y11l);
  206.   ref1=z4l{right} o_t z5l; ref2=z13--z20;       % pts added for terminal finish
  207.   z21=ref1 intersectionpoint ref2; 
  208.   (t1,t2)=ref1 intersectiontimes ref2;
  209.  
  210.   p1=(bulb.tr(z1,z2r,z2l,term_length,bulb_thickness,90) o_t z3l{downward} o_t  
  211.      if G_spur:subpath (0,t1) of ref1 soften(z21,z13,z13r)        % spur option
  212.         else:z4l{right} o_t z5l if softpath:)softjoin( else:--fi fi
  213.       z5l--fullserif.r(z11,z13,z12l,z12r,.75hs,.25hs)--z20 
  214.         if softpath:)softjoin( else:--fi
  215.       z20 i_t z4r{left} i_t z3r{upward} i_t z2r{right})--cycle;
  216.   show